package model.bean;

import static org.junit.Assert.*;
import it.mrcrack.exception.DataFormatException;

import java.util.GregorianCalendar;

import org.junit.Test;

public class MancatoFunzionamentoTest {

	@Test
	public void testMancatoFunzionamento() {
		MancatoFunzionamento m=new MancatoFunzionamento();
		assertEquals(m.getOra(), null);
		assertEquals(m.getErrore(), null);
		assertEquals(m.getDurata(), -1, 0);
	}

	@Test
	public void testSetGetOra() {
		System.out.println("Testo setOra() e getOra()");
		MancatoFunzionamento m=new MancatoFunzionamento();
		GregorianCalendar ora=new GregorianCalendar();
		try {
			m.setOra(null);
		} catch (DataFormatException e) {
			assertEquals(e.getMessage(),"L'ora del mancato funzionamento non puo' essere null");
		}
		assertEquals(m.getOra(),null);
		try {
			m.setOra(ora);
		} catch (DataFormatException e) {
			fail(e.getMessage());
		}
		assertEquals(m.getOra(),ora);
		assertNotSame(m.getOra(), ora);
	}

	@Test
	public void testSetGetDurata() {
		System.out.println("Testo setDurata() e getDurata()");
		MancatoFunzionamento m=new MancatoFunzionamento();
		try {
			m.setDurata(-1);
		} catch (DataFormatException e) {
			assertEquals(e.getMessage(),"La durata del mancato funzionamento non puo' essere minore di 1");
		}
		assertEquals(m.getDurata(), -1, 0);
		try {
			m.setDurata(1);
		} catch (DataFormatException e) {
			fail(e.getMessage());
		}
		assertEquals(m.getDurata(), 1, 0);
	}

	@Test
	public void testSetGetErrore() {
		System.out.println("Testo setErrore() e getErrore()");
		MancatoFunzionamento m=new MancatoFunzionamento();
		try {
			m.setErrore(null);
		} catch (DataFormatException e) {
			assertEquals(e.getMessage(),"L'errore del mancato funzionamento non puo' essere minore di 0");
		}
		assertEquals(m.getErrore(), null);
		try {
			m.setErrore("a");
		} catch (DataFormatException e) {
			fail(e.getMessage());
		}
		assertEquals(m.getErrore(), "a");
	}

	@Test
	public void testImpostato() {
		System.out.println("Testo impostato()");
		MancatoFunzionamento m=new MancatoFunzionamento();
		GregorianCalendar ora=new GregorianCalendar();
		try {
			assertFalse(m.impostato());
			m.setOra(ora);
			assertFalse(m.impostato());
			m.setDurata(1);
			assertFalse(m.impostato());
			m.setErrore("a");
			assertTrue(m.impostato());
		} catch (DataFormatException e) {
			fail(e.getMessage());
		}
	}

}
